home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 October: Mac OS SDK / Dev.CD Oct 96 SDK / Dev.CD Oct 96 SDK2.toast / Development Kits (Disc 2) / OpenDoc / OpenDoc Development / Debugging Support / OpenDoc Source Code / Imaging / Trnsform.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1996-04-22  |  2.3 KB  |  105 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        Trnsform.cpp
  3.  
  4.     Contains:    Macintosh implementation of ODTransform
  5.  
  6.     Owned by:    Jens Alfke
  7.  
  8.     Copyright:    © 1994 Apple Computer, Inc. All rights reserved.
  9.  
  10.     Change History (most recent first):
  11.  
  12.          <8>     10/8/95    TJ        Fixes Recomended by Refball
  13.          <7>     12/5/94    jpa        Fixes from code review. [1203923]
  14.          <6>     8/17/94    jpa        Function prefixes. [1181512]
  15.          <5>      8/8/94    jpa        Updated after base class API change
  16.                                     [1179574]
  17.          <4>     7/26/94    eeh        ODQDPoint -> Point
  18.          <3>     7/15/94    jpa        SetQDOffset now takes a Point*.
  19.          <2>     6/30/94    jpa        Filled in methods.
  20.          <1>     6/15/94    jpa        first checked in
  21.  
  22.     To Do:
  23. */
  24.  
  25.  
  26. #define ODTransform_Class_Source
  27. #include <Trnsform.xih>
  28.  
  29. #ifndef _LINEOPS_
  30. #include <LineOps.h>            /* For kFixedEpsilon */
  31. #endif
  32.  
  33.  
  34. static ODBoolean AlmostInteger( ODFixed n )
  35. {
  36.     ODSShort f = (ODSShort)n;                // f is fractional part of n
  37.     return f<=(ODSShort)kFixedEpsilon && f>=-(ODSShort)kFixedEpsilon;
  38. }
  39.  
  40.  
  41. SOM_Scope void  SOMLINK ODTransform__InitTransform(ODTransform *somSelf, Environment *ev)
  42. {
  43.     /* ODTransformData *somThis = ODTransformGetData(somSelf); */
  44.     ODTransformMethodDebug("ODTransform","InitTransform");
  45.  
  46.     SOM_TRY
  47.     somSelf->InitBaseTransform(ev);
  48.     SOM_CATCH_ALL
  49.     SOM_ENDTRY
  50. }
  51.  
  52. SOM_Scope ODBoolean  SOMLINK ODTransform__IsQDOffset(ODTransform *somSelf, Environment *ev)
  53. {
  54.     /* ODTransformData *somThis = ODTransformGetData(somSelf); */
  55.     ODTransformMethodDebug("ODTransform","IsQDOffset");
  56.  
  57.     SOM_TRY
  58.     
  59.     if( somSelf->GetType(ev) <= kODTranslateXform ) {
  60.         ODPoint offset;
  61.         somSelf->GetOffset(ev, &offset);
  62.         return AlmostInteger(offset.x) &&
  63.                AlmostInteger(offset.y);
  64.     } else
  65.         return kODFalse;
  66.     
  67.     SOM_CATCH_ALL
  68.     SOM_ENDTRY
  69.     return kODFalse;
  70. }
  71.  
  72.  
  73. SOM_Scope Point  SOMLINK ODTransform__GetQDOffset(ODTransform *somSelf, Environment *ev)
  74. {
  75.     /* ODTransformData *somThis = ODTransformGetData(somSelf); */
  76.     ODTransformMethodDebug("ODTransform","GetQDOffset");
  77.  
  78.     ODPoint pt;
  79.  
  80.     SOM_TRY
  81.     somSelf->GetOffset(ev,&pt);
  82.     SOM_CATCH_ALL
  83.     SOM_ENDTRY
  84.     
  85.     return pt.AsQDPoint();
  86. }
  87.  
  88.  
  89.  
  90. SOM_Scope ODTransform*  SOMLINK ODTransform__SetQDOffset(ODTransform *somSelf, Environment *ev,
  91.         Point* point)
  92. {
  93.     /* ODTransformData *somThis = ODTransformGetData(somSelf); */
  94.     ODTransformMethodDebug("ODTransform","SetQDOffset");
  95.  
  96.     SOM_TRY
  97.     
  98.     ODPoint offset( *point );
  99.     somSelf->SetOffset(ev,&offset);
  100.     
  101.     SOM_CATCH_ALL
  102.     SOM_ENDTRY
  103.     return somSelf;
  104. }
  105.